home *** CD-ROM | disk | FTP | other *** search
- unit IPXLib;
-
- interface
-
- uses DOS;
-
- const
- UNKNOWN_PACKET_TYPE = 0;
- ROUTING_INFORMATION_PACKET = 1;
- ECHO_PACKET = 2;
- ERROR_PACKET = 3;
- PACKET_EXCHANGE_PACKET = 4;
- SEQUENCED_PACKET_PROTOCOL_PACKET = 5;
-
- ANY_SERVER = $FFFF;
-
-
- type
- ServerID = array[1..48] of char;
-
- NetworkAddress = array[1..4] of byte;
- NodeAddress = array[1..6] of byte;
- SocketAddress = word;
-
- InternetworkAddress = RECORD
- NetworkNumber : NetworkAddress;
- PhysicalNodeNumber : NodeAddress;
- SocketNumber : SocketAddress;
- end;
-
- IPXHeaderType = RECORD
- CheckSum : word;
- Length : word;
- TransportControl : byte;
- PacketType : byte;
- Destination : InternetworkAddress;
- Source : InternetworkAddress;
- end;
-
- IPXPacketType = RECORD
- Header : IPXHeaderType;
- end;
-
- SPXPacketType = RECORD
- Header : IPXHeaderType;
- ConnectionControl : byte;
- DataStreamType : byte;
- SourceConnectionID : word;
- DestinationConnectionID : word;
- SequenceNumber : word;
- AcknowledgeNumber : word;
- AllocationNumber : word;
- end;
-
- ConnectionStatusBlock = RECORD
- ConnectionState : byte;
- ConnectionFlags : byte;
- SourceConnectionID : word;
- DestinationConnectionID : word;
- SequenceNumber : word;
- AcknowledgeNumber : word;
- AllocationNumber : word;
- RemoteAcknowledgeNumber : word;
- RemoteAllocationNumber : word;
- ConnectionSocket : word;
- ImmeadiateAddress : word;
- Destination : InternetworkAddress;
- RetransmissionCount : word;
- EstimatedRoundtripDelay : word;
- RetransmittedPackets : word;
- SuppressedPackets : word;
- end;
-
- SAPFunctionType = RECORD
- case integer of
- 1 : (ResponseType : word);
- 2 : (QueryType : word);
- 3 : (AutoBroadcastType : word);
- 4 : (ServerShutdownAdType : word);
- end;
-
- SAPPacketType = RECORD
- Header : IPXHeaderType;
- FunctionCode : SAPFunctionType;
- ServerType : word;
- ServerName : ServerID;
- ResidentNetwork : InternetworkAddress;
- IntermediateNetworks : word;
- end;
-
- ServerIDInfo = RECORD
- ServerType : word;
- ServerName : ServerID;
- ResidentNetwork : InternetworkAddress;
- IntermediateNetworks : word;
- end;
-
- GSQPacketType = RECORD
- Header : IPXHeaderType;
- FunctionCode : SAPFunctionType;
- ServerInfo : array[1..8] of ServerIDInfo
- end;
-
- PacketDescriptorType = RECORD
- case integer of
- 1 : (IPXAddress : ^IPXPacketType;
- IPXSize : integer);
- 2 : (SPXAddress : ^SPXPacketType;
- SPXSize : integer);
- 3 : (SAPAddress : ^SAPPacketType;
- SAPSize : integer);
- 4 : (GSQAddress : ^GSQPacketType;
- GSQSize : integer);
- end;
-
- DescriptorType = RECORD
- Address : pointer;
- Size : integer;
- end;
-
- AESECB = RECORD
- Link : pointer;
- ESRAddress : pointer;
- InUse : boolean;
- AESWorkSpace : array[1..5] of byte;
- end;
-
- WorkSpaceArray = array[1..12] of byte;
-
- IPXECB = RECORD
- Link : pointer;
- ESRAddress : pointer;
- InUse : boolean;
- CompletionCode : byte;
- SocketNumber : word;
- IPXWorkSpace : longint;
- DriverWorkSpace : WorkSpaceArray;
- ImmediateAddress : NodeAddress;
- FragmentCount : integer;
- PacketDescriptor : PacketDescriptorType;
- FragmentDescriptor : DescriptorType;
- PascalESRAddress : pointer;
- UserDataAddress : pointer;
- end;
-
- var
- IPXResult : integer;
- var
- SPXInstalled : boolean;
- var
- SPXResult : integer;
- var
- SAPResult : integer;
- SAPSocket : word;
- SAPadECB : ^IPXECB;
- SAPadPacket : ^SAPPacketType;
- SAPWaitAddress,
- SAPAdvertiseAddress : pointer;
- var
- Regs : Registers;
-
-
- (* IPX *********************************************************************)
-
- procedure SetDataSegment;
- procedure PrepareIPXInterface;
- procedure OpenSocket(var SocketNumber : word);
- procedure CloseSocket(SocketNumber : word);
- procedure GetLocalTarget(var InterNetAddress; var LocalTargetAddress; var TransportTime : integer);
- procedure SendPacket(var AnECB);
- procedure ListenForPacket(var AnECB);
- procedure ScheduleIPXEvent(Delay : integer; var AnECB);
- procedure CancelEvent(var AnECB);
- procedure ScheduleSPecialEvent(Delay : integer; var AnECB);
- procedure GetIntervalMarker(var IntervalMarker : word);
- procedure GetInterNetworkAddress(var LocalNetworkAddress);
- procedure RelinquishControl;
- procedure DisconnectFromTarget(var ATargetAddress);
-
-
- (* SPX *********************************************************************)
-
- procedure CheckSPXInstallation;
- procedure EstablishConnection(RetryCount : byte; MonitorConnection : boolean;
- var AnECB; var ConnectionID : word);
- procedure ListenForConnection(RetryCount : byte; MonitorConnection : boolean;
- var AnECB);
- procedure TerminateConnection(ConnectionNumber : word; var AnECB);
- procedure AbortConnection(ConnectionNumber : word);
- procedure GetConnectionStatus(ConnectionNumber : word; var AnECB; var Exists : boolean);
- procedure SendSequencedPacket(ConnectionNumber : word; var AnECB);
- procedure ListenForSequencedPacket(var AnECB);
- procedure ESRPortal;
- function ReverseWord(BackwardsWord : word) : word;
-
- (***************************************************************************)